﻿namespace Proto
{
    using Proto.Fields;

    public interface ISubItem<T>
    {
        IKey SubscriptionKey { get; }
        SubState CurrentState { get; }

        T Current { get; }

        void EnqueueUpdate(T update);
        void ProcessOutstandingUpdates();

        event UpdateDelegate<T> Updated;
    }
}